Temporospatial software-defined networking for NGSO satellite networks

ABSTRACT

The disclosure provides for a system that includes a network controller. The network controller is configured to receive information from nodes of a network, where nodes include one node that is in motion relative to another node. The network controller is also configured to generate a table representing nodes, available storage at each node, and possible links in the network over a period of time based on the information, and determine a series of topologies of the network based on the table. Based on received client data including a data amount, the network controller is configured to determine flows for the topology. The network controller then is configured to generate a schedule of network configurations based on the flows, and send instructions to the nodes of the network for implementing the network configurations and transmitting client data.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. application Ser. No.16/444,620, filed Jun. 18, 2019, which is a continuation of U.S.application Ser. No. 15/954,922 filed Apr. 17, 2018, now issued as U.S.Pat. No. 10,374,695, which application claims the benefit of the filingdate of U.S. Provisional Patent Application No. 62/511,377 filed May 26,2017, the disclosures of which are hereby incorporated herein byreference.

BACKGROUND

Information can be transmitted over directional point-to-point networks,such as aerospace and other mobile networks. In such networks, links canbe formed between pairs of nodes by aiming transceivers of each nodepair towards each other. In some implementations, nodes may includenon-geostationary satellite orbit (NGSO) satellites or otherhigh-altitude platforms (HAPs) that are in motion relative to the Earth.

BRIEF SUMMARY

One aspect of the disclosure provides a system including a networkcontroller. The network controller is configured to receive informationfrom a plurality of nodes of a network, the plurality of nodes includinga first node that is in motion relative to a second node; generate atable representing nodes, available storage at each node, and possiblelinks in the network over a period of time based on the receivedinformation; determine a series of topologies of the network over theperiod of time based on the generated table; receive client datainformation from one or more client devices, the client data informationincluding a data amount; determine a plurality of flows for thedetermined series of topologies based on at least the data amount andthe available storage at each node, each of the plurality of flowscomprising one or more requirements for a routing path through thenetwork; generate a schedule of network configurations for thedetermined series of topologies based on the determined plurality offlows; and send instructions to the plurality of nodes of the networkfor implementing the schedule of network configurations and transmittingclient data over the period of time.

In one example, the system also includes the plurality of nodes. Inanother example, the plurality of nodes includes one or more groundstations and one or more high-altitude platforms. In another example,the plurality of nodes are configured to perform free-space opticalcommunication. In another example, the schedule of networkconfigurations includes a first network configuration, a second networkconfiguration scheduled to follow the first network configuration, afirst routing path having a first portion between a first node and asecond node and a second portion between the second node and a thirdnode, and the first portion of the first routing path being a part ofthe first network configuration and the second portion of the firstrouting path being a part of the second network configuration. Inaddition, the second node has enough available storage to store the dataamount, and the second portion of the first routing path beings at thesecond node and the second node is configured to store the client databefore transmitting the client data via the second portion of therouting path. In addition, the second network configuration includes anewly established link between the second node and a next hop in thesecond portion of the routing path, and the second node is in motionrelative to the next hop in the second portion of the routing path. Inaddition or alternatively, the network controller is also configured todetermine that there are no routes between the first node and the thirdnode in each topology in the series of topologies and generate theschedule of network configurations in response to determining that thereare no routes between the first node and the third node in each topologyin the series of topologies. In another example, the network controlleris configured to determine a plurality of flows for the determinedseries of topologies based on at least the data amount and the availablestorage at each node by identifying a given node having enough availablestorage to store the data amount and determining at least one flowincluding the given node in which the given node is used to store theclient data for a period of time in the at least one flow.

Another aspect of the disclosure provides a method. The method includesreceiving, by a network controller for a network, information from aplurality of nodes of the network, the plurality of nodes including afirst node that is in motion relative to a second node; generating, bythe network controller, a table representing nodes, storage capacity ofeach node, and possible links in the network over a period of time basedon the received information; determining, by the network controller, aseries of topologies of the network over the period of time based on thegenerated table; receiving, by the network controller, client datainformation from one or more client devices, the client data informationincluding a data amount; determining, by the network controller, aplurality of flows for the determined series of topologies based on atleast the data amount and the storage capacity of each node, each of theplurality of flows comprising one or more requirements for a routingpath through the network; generating, by the network controller, aschedule of network configurations for the determined series oftopologies based on the determined plurality of flows; and sending, bythe network controller, instructions to the plurality of nodes of thenetwork for implementing the schedule of network configurations andtransmitting client data over the period of time.

In another example, the schedule of network configurations includes afirst network configuration, a second network configuration scheduled tofollow the first network configuration, a first routing path having afirst portion between a first node and a second node and a secondportion between the second node and a third node, the first portion ofthe first routing path being a part of the first network configurationand the second portion of the routing path being a part of the secondnetwork configuration. In this example, the second node has enoughavailable storage to store the data amount, and the second portion ofthe first routing path beings at the second node, and the second node isconfigured to store the client data before transmitting the client datavia the second portion of the routing path. In addition, the secondnetwork configuration includes a newly established link between thesecond node and a next hop in the second portion of the routing path,and the second node is in motion relative to the next hop in the secondportion of the routing path. In addition or alternatively, the methodalso includes determining, by the network controller, that there are noroutes between the first node and the third node in each topology in theseries of topologies; and generating, by the network controller, theschedule of network configurations in response to determining that thereare no routes between the first node and the third node in each topologyin the series of topologies. In another example, determining a pluralityof flows for the determined series of topologies based on at least thedata amount and the available storage at each node includes identifyinga given node having enough available storage to store the data amount;and determining at least one flow including the given node in which thegiven node is used to store the client data for a period of time in theat least one flow.

A further aspect of the disclosure provides a non-transitory, tangiblecomputer-readable storage medium on which computer readable instructionsof a program are stored, the instructions, when executed by a networkcontroller for a network, cause the network controller to perform amethod. The method includes receiving information from a plurality ofnodes of the network, the plurality of nodes including a first node thatis in motion relative to a second node; generating a table representingnodes, storage capacity of each node, and possible links in the networkover a period of time based on the received information; determining aseries of topologies of the network over the period of time based on thegenerated table; receiving client data information from one or moreclient devices, the client data information including a data amount;determining a plurality of flows for the determined series of topologiesbased on at least the data amount and the storage capacity of each node,each of the plurality of flows comprising one or more requirements for arouting path through the network; generating a schedule of networkconfigurations for the determined series of topologies based on thedetermined plurality of flows; and sending instructions to the pluralityof nodes of the network for implementing the schedule of networkconfigurations and transmitting client data over the period of time.

In one example, the schedule of network configurations includes a firstnetwork configuration, a second network configuration scheduled tofollow the first network configuration, a first routing path having afirst portion between a first node and a second node and a secondportion between the second node and a third node, the first portion ofthe first routing path being a part of the first network configurationand the second portion of the routing path being a part of the secondnetwork configuration. In this example, the second node has enoughavailable storage to store the data amount, and the second portion ofthe first routing path beings at the second node, and the second node isconfigured to store the client data before transmitting the client datavia the second portion of the first routing path.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a pictorial diagram of an example directional point-to-pointnetwork 100 in accordance with aspects of the disclosure.

FIG. 2 is a functional diagram of a portion 200 of the network 100 shownin FIG. 1 in accordance with aspects of the disclosure.

FIG. 3 is a functional diagram of a network controller 300 in accordancewith aspects of the disclosure.

FIGS. 4A and 4B are an example table 400 in accordance with aspects ofthe disclosure.

FIG. 5 is a flow diagram 500 of a method in accordance with aspects ofthe disclosure.

FIG. 6 is a functional diagram of a topology 600 of the network 100shown in FIG. 1 in accordance with aspects of the disclosure.

FIG. 7 is a functional diagram of another topology 700 of the network100 shown in FIG. 1 in accordance with aspects of the disclosure.

FIG. 8A is a functional diagram of a first part 800A of a routing paththat may be implemented in the topology 600 shown in FIG. 6 inaccordance with aspects of the disclosure.

FIG. 8B is a functional diagram of a second part 800B of the routingpath that may be implemented in topology 700 shown in FIG. 7 inaccordance with aspects of the disclosure.

DETAILED DESCRIPTION

Overview

The technology relates to a Temporospatial Software-Defined Networking(TS-SDN) operating system configured for use in an aerospacecommunication network. Particularly, the TS-SDN operating system may beused in aerospace communication networks that include non-geostationarysatellite orbit (NGSO) satellites or other high-altitude platforms(HAPs) as nodes. Due to the movement of nodes relative to one another inthe network, a given node may be in communication with another node at afirst point in time, and be out of range of the other node at a secondpoint in time. The TS-SDN operating system may schedule and implementthe services and applications that control, monitor, and reconfigure thenetwork layer and switching functionality to account for such changes inthe communication ranges of the nodes.

In operation, a TS-SDN controller may periodically update a list ofavailable nodes, such as, for example, NGSO satellites configured forfree-space optical communication (FSOC), and available flows and routesthrough the aerospace network. The list may include a schedule of theavailable nodes and available flows. The available routes may be basedin part on available storage at each of the nodes. The TS-SDN controllermay automatically schedule the tasking of FSOC terminals and transmitthe schedule to the FSOC terminals to synchronize changes to theaerospace network according to the schedule.

Example Systems

FIG. 1 is a block diagram of an example directional point-to-pointnetwork 100. The network 100 is a directional point-to-point computernetwork consisting of nodes mounted on various land- and air-baseddevices, some of which may change position with respect to other nodesin the network 100 over time. For example, the network 100 includesnodes associated with each of two land-based datacenters 105 a and 105 b(generally referred to as datacenters 105), nodes associated with eachof two ground stations 107 a and 107 b (generally referred to as groundstations 107), and nodes associated with each of four airborne highaltitude platforms (HAPs) 110 a-110 d (generally referred to as HAPs110). As shown, HAP 110 a is a blimp, HAP 110 b is an airplane, HAP 110c is a balloon, and HAP 110 d is a satellite. In some embodiments, nodesin network 100 may be equipped to perform FSOC, making network 100 anFSOC network. Additionally or alternatively, nodes in network 100 may beequipped to communicate via radio-frequency signals or othercommunication signal capable of travelling through free space. Arrowsshown between a pair of nodes represent possible communication links120, 122, 130-137 between the nodes. The network 100 as shown in FIG. 1is illustrative only, and in some implementations the network 100 mayinclude additional or different nodes. For example, in someimplementations, the network 100 may include additional HAPs, which maybe balloons, blimps, airplanes, unmanned aerial vehicles (UAVs),satellites, or any other form of high altitude platform.

In some implementations, the network 100 may serve as an access networkfor client devices such as cellular phones, laptop computers, desktopcomputers, wearable devices, or tablet computers. The network 100 alsomay be connected to a larger network, such as the Internet, and may beconfigured to provide a client device with access to resources stored onor provided through the larger computer network. In someimplementations, HAPs 110 can include wireless transceivers associatedwith a cellular or other mobile network, such as eNodeB base stations orother wireless access points, such as WiMAX or UMTS access points.Together, HAPs 110 may form all or part of a wireless access network.HAPs 110 may connect to the datacenters 105, for example, via backbonenetwork links or transit networks operated by third parties. Thedatacenters 105 may include servers hosting applications that areaccessed by remote users as well as systems that monitor or control thecomponents of the network 100. HAPs 110 may provide wireless access forthe users, and may forward user requests to the datacenters 105 andreturn responses to the users via the backbone network links.

As shown in FIG. 2, each node, such as ground stations 107 and HAPs 110may include one or more transceivers configured to create one or morelinks, such as links 130-137, between a given HAP 110 and another nodein the network. Referring to HAP 110 a, each of the nodes, such asground stations 107 and HAPs 110 of network 100, may include one or moreprocessors 210, memory 212, and one or more transceivers 220. For thesake of clarity and simplicity, only ground station 107 a and HAPs 110a, 110 d are shown in FIG. 2. However, other ground stations and HAPs inthe network may have the same or as similar configuration as groundstation 107 or HAPS 110 a, 110 d.

The one or more processors 210 may be any conventional processors, suchas commercially available CPUs. Alternatively, the one or moreprocessors may be a dedicated device such as an application specificintegrated circuit (ASIC) or other hardware-based processor, such as afield programmable gate array (FPGA). Although FIG. 2 functionallyillustrates the one or more processors 210 and memory 212 as beingwithin the same block, it will be understood that the one or moreprocessors 210 and memory 212 may actually comprise multiple processorsand memories that may or may not be stored within the same physicalhousing. Accordingly, references to a processor or computer will beunderstood to include references to a collection of processors orcomputers or memories that may or may not operate in parallel.

Memory 212 stores information accessible by the one or more processors210, including data 214, and instructions 216, that may be executed bythe one or more processors 210. The memory may be of any type capable ofstoring information accessible by the processor, includingnon-transitory and tangible computer-readable mediums containingcomputer readable instructions such as a hard-drive, memory card, ROM,RAM, DVD or other optical disks, as well as other write-capable andread-only memories. The system and method may include differentcombinations of the foregoing, whereby different portions of the data214 and instructions 216 are stored on different types of media. In thememory of each node, such as memory 212 of HAP 110 a, a forwardinginformation base or forwarding table may be stored that indicate howsignals received at each node should be forwarded, or transmitted. Forexample, the forwarding table stored in memory 212 may indicate that asignal received from ground station 107 a should be forwarded to HAP 110d.

Data 214 may be retrieved, stored or modified by the one or moreprocessors 210 in accordance with the instructions 216. For instance,although the system and method is not limited by any particular datastructure, the data 214 may be stored in computer registers, in arelational database as a table having a plurality of different fieldsand records, XML documents or flat files. The data 214 may also beformatted in any computer-readable format such as, but not limited to,binary values or Unicode. By further way of example only, image data maybe stored as bitmaps comprised of grids of pixels that are stored inaccordance with formats that are compressed or uncompressed, lossless(e.g., BMP) or lossy (e.g., JPEG), and bitmap or vector-based (e.g.,SVG), as well as computer instructions for drawing graphics. The data214 may comprise any information sufficient to identify the relevantinformation, such as numbers, descriptive text, proprietary codes,references to data stored in other areas of the same memory or differentmemories (including other network locations) or information that is usedby a function to calculate the relevant data.

The instructions 216 may be any set of instructions to be executeddirectly (such as machine code) or indirectly (such as scripts) by theone or more processors 210. For example, the instructions 216 may bestored as computer code on the computer-readable medium. In that regard,the terms “instructions” and “programs” may be used interchangeablyherein. The instructions 216 may be stored in object code format fordirect processing by the one or more processors 210, or in any othercomputer language including scripts or collections of independent sourcecode modules that are interpreted on demand or compiled in advance.Functions, methods and routines of the instructions 216 are explained inmore detail below.

The one or more transceivers 220 may be mounted to actuators that can becontrolled, or steered, to point in a desired direction. To form a linkbetween two nodes, such as the node associated with the HAP 110 a andthe node associated with the HAP 110 d, the transceivers of therespective nodes can be controlled to point in the direction of oneanother so that data can be sent and received between the nodes. In someimplementations, the power of the signals transmitted by eachtransceiver can also be controlled by the one or more processors ofrespective nodes to facilitate formation of the links 130-137 in thenetwork 100 (see FIG. 1, for instance). For example, nodes that areseparated by a relatively large distance can be configured to operate ata higher power to compensate for the reduction in signal-to-noise ratiothat occurs over the distance separating the two nodes. Nodes that arespaced nearer to one another may be controlled to operate at arelatively lower power so as to save power.

In some implementations, the network 100 can be an SDN that iscontrolled by an SDN controller, such as network controller 300 depictedin FIG. 3. The network controller 300 may be located at one of thenetwork nodes or at a separate platform, such as, for example, in one ofthe datacenters 105. The nodes of the network 100 can be configured tocommunicate with one another using the steerable transceivers, such asthe one or more transceivers 220. As the HAPs 110 move with respect toone another and with respect to the datacenters 105 and ground stations107 over time, some of the links shown in the block diagram of FIG. 1may become infeasible. For example, the link 130 between the groundstation 107 a and the HAP 110 a may not be feasible when the path of theHAP 110 a brings the HAP 110 a into a position in which it is out ofrange of the ground station 107 a, or in which the earth is positionedbetween it and the ground station 107 a. Thus, due to the continuousmovement of the HAPs 110, the topology of the network 100 may requireregular (i.e. periodic) or irregular reconfiguration to maintainconnectivity and to satisfy determined network flows.

FIG. 3 is a block diagram 300 of network controller 300. The networkcontroller 300 may be configured to send control messages to the network100 to configure the topology of the network 100, to pass routinginformation to the nodes 107, 110 of the network 100, and to schedulechanges to the topology of the network 100 to transmit client data. Asshown in FIG. 3, the network controller 300 may include one or moreprocessors 310, memory, 320, and communications system 340. The one ormore processors 310 may be similar to the one or more processors 210described above.

Memory 320 may store information accessible by the one or moreprocessors 310, including data 322 and instructions 324 that may beexecuted by processor 310. Memory 320, data 322, and instructions 324may be configured similarly to memory 212, data 214, and instructions216 described above. The data 322 may include a table representing allof the available nodes and possible links in the network 100 at a giventime or time frame, such as table 400 in FIG. 4. The table 400 may havea column for every node and link in the network 100 and a row for a timeor time frame. In some cases, the columns and the rows may be reversed.The table 400 may also store, for each node and each link, scheduledtimes or time frames during which the node or link is available.Alternatively, a graph or other form of information organization may beused. The instructions 324 may include a topology and routing managermodule 326, a topology determination module 328, a flow determinationmodule 330, a solver module 332, a flight control module 334, and ascheduling module 336.

Returning to FIG. 3, the communications system 340 may be configured tocommunicate with the nodes 107, 110 of network 100 as well as one ormore client devices 350. In some embodiments, the communication system340 includes a Control to Data-Plane Interface (CDPI) driver configuredto communicate with a CDPI agent at each of the nodes 107, 110. Inaddition, the communications system 340 of the network controller 300may include one or more northbound interface (NBI) agents configured tocommunicate with an NBI driver at each client device 350 associated withone or more SDN applications. The communication system 340 mayoptionally or alternatively be configured to transmit and receive asignal via radio frequencies, optical frequencies, optical fiber, cable,or other communication means to and from the nodes 107, 110 in thenetwork 100 and the one or more client devices 350.

Each client device 350 may be a personal computing devices or a serverwith one or more processors 360, memory 370, data 372, and instructions374 similar to those described above with respect to the one or moreprocessors 210 and 310, memories 212 and 320, data 214 and 322, andinstructions 216 and 324. Personal computing devices may include apersonal computer that has all of the components normally used inconnection with a personal computer such as a central processing unit(CPU), memory (e.g., RAM and internal hard drives) storing data andinstructions, an electronic display (e.g., a monitor having a screen, asmall LCD touch-screen, a projector, a television, or any otherelectrical device that is operable to display information), user input(e.g., a mouse, keyboard, touch-screen or microphone), camera, speakers,a network interface device, and all of the components used forconnecting these elements to one another. Personal computing devices mayalso include mobile devices such as PDAs, cellular phones, and the like.Indeed, client devices 350 may include any device capable of processinginstructions and transmitting data to and from humans and othercomputers including general purpose computers, network computers lackinglocal storage capability, and set-top boxes for televisions. In someembodiments, client devices may be associated with one or more SDNapplications and may have one or more NBI drivers.

Turning to the modules of the instructions 324 of FIG. 3, the topologyand routing manager module 326 may cause the one or more processors 310to interface between the network controller 300 and the network 100.Using the topology and routing manager module 326, the one or moreprocessors 310 may receive information from each of the nodes within thenetwork 100. For example, in some implementations, the topology androuting manager module 326 may cause the one or more processors 310 toreceive information from each node 107, 110 in the network 100corresponding to the current location of each node, the predicted pathof each node, the current links associated with each node, the routinginformation stored by each node, and the current storage capacity, forinstance how many free or available bits can be utilized if any, at eachnode. Information received from each node may also include weatherconditions, turbulence, radiation, or other reports regarding otherconditions that may affect FSOC between nodes. Each node also may sendto the one or more processors 310 information corresponding to anyfailed links, which may occur due to unforeseen obstructions betweennodes, turbulence at a node, or failure of one or more transceivers.

The topology and routing manager module 326 may also cause one or moreprocessors 310 to receive predicted link metrics and conditions. Forexample, a predicted link metric may include a predicted value of anetwork performance metric for a hypothetical link that may be formedcurrently or in the future based on information received from the nodes107, 110. Network performance metrics may include bandwidth capacity,latency, or link lifetime duration, and can be based on the predictedrelative motion or trajectory of the nodes 107, 110 in the network 100.Link lifetime duration may represent the period of time during which alink is feasible in the network 100. Weather forecasts in nodelocations, predicted node locations or predicted links may also bereceived by the one or more processors 310 from the nodes 107, 110 oroptionally from a remote system.

Using the topology and routing manager module 326, the one or moreprocessors 310 may store the information received from the network 100in the memory 320. For instance, the table 400, depicted across FIGS. 4Aand 4B, represents all of the available nodes (FIG. 4A) and possiblelinks (FIG. 4B) in the network 100 may be updated or annotated withinformation relevant for a particular node or link in the table. Theannotations of the table 400 may indicate availability of each node inthe network 100, current and future locations of each node, current andfuture expected weather conditions, as well as a current amount ofavailable storage at each of the nodes and a future (estimated) amountof available storage at each of the nodes in the network. In addition,the annotations of table may indicate the current and futureavailability of particular links as well as the current and futureexpected bandwidth for such links. Failed links and forecastedconditions may also be noted and stored in the table 400.

The topology determination module 328 may cause the one or moreprocessors 310 to determine a current or future topology of the network100. The determination of the current topology of the network 100 may bemade based on the information received and stored by the one or moreprocessors using the topology and routing manager module 326. Forexample, the topology determination module 328 may cause the one or moreprocessors 310 to aggregate the information relating to the currentlocation of each node 107, 110, the links 130-137 formed between eachpair of nodes, the available storage at each node 107, 110, and anyfailed links that may exist within the network 100. The one or moreprocessors 310 may receive this information through use of the topologyand routing manager module 326, or may retrieve this information fromthe memory 320.

Additional information may also be used by the one or more processors310 using the topology determination module 328 to determine the currenttopology of the network 100. Predicted link metrics received by the oneor more processors 310 using the topology and routing manager module 326and may also be used to determine the bandwidth, quality of service, andother characteristics of available links in the current topology. Insome implementations, using the topology determination module 328, theone or more processors 310 may also receive information through usingthe flight control module 334 corresponding to the flight paths of theairborne network nodes, such as HAPs 110, at a particular time or over aparticular time frame at or near the current time, and the determinationof the current topology may be made based also on the received flightinformation.

To determine a future topology of the network 100, the one or moreprocessors 310 may aggregate location information, predicted linkconditions, flight information, available storage and/or weatherforecasts related to a future time using the topology determinationmodule 328. The one or more processor 310 may access the informationstored in the table 400 or elsewhere in the memory 320 regardingavailable nodes and links at the future time, location information,predicted link conditions, flight information, and/or weather forecasts.The information for the future time may be used by the one or moreprocessors 310 to determine where nodes are predicted to be and what theavailability of nodes and links and storage capabilities at each nodeare predicted to be at the future time.

The topology determination module 328 may cause the one or moreprocessors 310 to store the current or future topology or other topologyinformation in the memory 320, such as by generating and or updating thetable 400 representing all of the available nodes and possible links inthe network 100 and the scheduled times or time frames associated witheach node or link.

The flow determination module 330 may cause the one or more processors310 to determine all of the flows that are determined in the network 100at a given time or time frame. A given flow may be one or morerequirements for a routing path through the network 100. For example,each flow may comprise a start station, an end station, a time frame, aminimum bandwidth, or other requirement for transmission. The one ormore processors 310 may determine the flows based on the topologyinformation determined using the topology determination module 328and/or information regarding characteristics of client data of the oneor more client devices 350. The client data information may be receivedby the one or more processors 310 using the scheduling module 336 asdescribed below from the one or more client devices 350 or a remotesystem. The client data information may include the sources anddestinations for client data, an amount of client data to betransmitted, and/or a timing for transmission of client data.

The minimum bandwidth of a flow may be preset or predetermined by theone or more processors 310 given available system resources and linkcapabilities or alternatively, may be determined based on requirementsincluded in the client data. Larger bandwidths may be set for flowstransporting larger amounts of data. The one or more processors 310 maydetermine a flow between a start station and a destination stationthrough the network capable of transmitting the amount of client data atthe requested time. In some embodiments, the one or more processors 310may also determine other information related to determined flows, suchas the class of service or quality of service for each determined flow.The other information may be based on requirements received from theclient device.

In some implementations, the flow determination module 330 may cause theone or more processors 310 to aggregate the client data from the one ormore client devices 350 to determine the total amount of bandwidthrequired between each node pair in the network 100. The aggregatedclient data may be stored, for example, in the memory 320. Furthermore,the client data may be aggregated at a granular level. For example, thenetwork data for each pair of nodes may be aggregated by class ofservice, quality of service, or any other relevant network trafficdiscriminator. The flows may be determined further based on any relevantnetwork traffic discriminator.

In other cases, historical client data trends may be used to predict theclient data amounts, sources, and destinations at a future point intime. The flow determination module 330 may cause the one or moreprocessors 310 to determine a plurality of available flows between everynode directly connectable to a client device at the future point intime. Directly connectable nodes, such as ground stations 107, may beable to communicate with a client device without use of the network 100.The predicted client data amounts between each node pair may be used todetermine the bandwidth requirements between each node pair.

Alternatively, in the absence of client data information, the one ormore processors 310 may determine a plurality of available flows betweenevery node directly connectable to a client device at the current orfuture time. The determination of the plurality of available flows maybe based on the current or future topology. In addition, thedetermination may be based on minimum system requirements.

The flow determination module 330 may cause the one or more processors310 to store the determined flows in the memory 320. In some examples,the one or more processors 310 may annotate the table with the flows.

The solver module 332 may cause the one or more processors 310 togenerate a network configuration or a schedule of network configurationsbased on the table stored in the memory. The network configuration mayrepresent a feasible network topology that is capable of satisfying alldetermined network flows and may include a list of nodes and links thatwould be in use in the feasible network topology and a schedule of whenthe nodes and links would be in use. The schedule of networkconfigurations may represent a feasible series of network topologiesthat are capable of satisfying all determined network flows. Thefeasible series of network topologies may include a list of nodes andlinks and a schedule of when the nodes and links would be in use foreach network configuration in the schedule of network configurations. Insome examples, the feasible series of network topologies includes anetwork topology during which data may be stored at a node havingavailable storage and a next network topology in which the node forms anew connection or link with another node and transmits the data via thenewly established link.

The network configuration(s) may be generated by the one or moreprocessors 310 based on the topology for a given point in time in thetable and on the network performance metrics of the topology at thegiven point in time. Various network performance metrics, such as, forexample, link bandwidth, link latency, flow bandwidth, flow priority,link switching time (i.e., the time required to implement a new topologyin the network 100), link duration, and/or topology duration, may bemodeled as weighted constraints for the topology at the given point intime. In some embodiments, one or more network performance metrics maynot be included in the table stored in the memory, but may be receivedfrom another module, another node, or from a remote system.

The one or more processors 310 may also compute routing paths for thedetermined flows over the topology represented by the networkconfiguration. A given routing path may be one way to implement a givenflow that satisfies the determined flow requirements and may includespecific nodes and links in the network, or a list of hops between aseries of nodes. In some examples, the given routing path may include anode having available storage that satisfies the determined flowrequirement regarding an amount of data to be transmitted through thenetwork. Data following the given routing path may be stored at the nodefor a period of time before travelling to a next hop.

In addition, information corresponding to a previous state of thenetwork and a previous network topology may also be used to determinethe network configuration or the schedule of network configurations. Forexample, the one or more processors 310 may generate the networkconfiguration based on at least in part a number of changes from theprevious network topology required for the network to implement thenetwork configuration and an amount of time required for the network tomake the number of changes. The one or more processors 310 mayalternatively generate the schedule of network configurations based onat least in part a number of changes between network topologies of thenetwork configurations in the schedule of network configurations and theamount of time between changes utilizing the information of routingtales such as the table 400. For example, changes may include steering atransceiver to point in a new direction or changing a forwarding tablestored at a memory of a node. Steering the transceiver may take moretake than changing the forwarding table stored at the memory of thenode. The generated network configuration may require a number ofchanges is below a threshold number and/or the amount of time below athreshold amount of time.

For some pairs of subsequent network configurations in the schedule ofnetwork configurations, the difference between the earlier networkconfiguration and the later network configuration may be a single changethat may not involve changing the direction of transceivers, such as arouting change at a single node.

After the one or more processors 310 has generated the networkconfiguration(s) and routing paths using the solver module 332, the oneor more processors 310 may control the nodes of the network 100according to the topology and routing manager module 326 to implementthe topology represented by the generated network configuration bysending implementation instructions to the nodes to cause the nodes toform the links included in the generated network configuration (e.g., bysteering their respective transceivers, adjusting their respectivetransmission power levels, setting their transmission and receptionfrequency bands, etc.) and update forwarding tables stored at the memoryat each node according to the computed routing paths for the determinedflows. Some forwarding tables may be updated with a schedule of changesbased on the schedule of network configurations and may alsoinstructions to store data at a node before a next hop.

The flight control module 334 may cause the one or more processors 310to generate flight instructions for the airborne nodes, such as HAPs110, regarding the flight paths of the airborne nodes. For example, theone or more processors 310 may be unable to determine a networkconfiguration using the solver module 332 representing a networktopology that is capable of satisfying all of the determined networkflows. The one or more processors may determine that the reasons forthis failure using the solver module 332 is that one or more of theairborne network nodes in the network 100 has travelled too far from theother network nodes to be able to form a link. In response, using theflight control module 334, the one or more processor 310 may generateand transmit flight instructions for the airborne nodes of the network100 that cause the airborne nodes to alter their flight paths such thatadditional links may be formed. For example, the flight instructions maycause the airborne nodes to move closer to one another or to avoidobstructions. After the nodes have been repositioned according to theflight instructions generated by the one or more processors using theflight control module 334, an updated table may be created using thetopology and routing manager module 326 or the topology determinationmodule 328 based on the new locations of the network nodes. Then, theupdated table may be processed by the one or more processors 310 usingthe solver module 332 to determine a network configuration.

The scheduling module 336 may cause the one or more processors 310 atthe network controller 300 to interface with the one or more clientdevices 350. Using the scheduling module 336, the one or more processors310 may receive from a client device 350 client data information to betransmitted through the network 100, such as, for example, the sourcesand destinations for the client data. Other information received fromthe client device 350 may include data related to client demand, such asamount of client data to be transmitted and a timing for transmission.The information may be stored in memory 320 and/or used according to theflow determination module 330 to determine the determined flows throughthe network 100.

After the determined flows are determined using the flow determinationmodule 330 and the network configuration is generated using the solvermodule 332 as described above, the one or more processors 310 maygenerate routing instructions for transmitting the client data throughthe network 100 based on the table and the generated networkconfiguration. These routing instructions may include a source locationof the client data, a destination location of the client data, and atiming for the transmission of the client data. In some embodiments, therouting instructions may include storage instructions to a node totemporarily store data from a previous node to be transmitted to a nextnode. The routing instructions may include a schedule that may be storedat a node of the network in directly connectable with the client device350 sending the client data. The one or more processors 310 may thensend the routing instructions to the node directly connectable with theclient device 350 to cause the node to receive and initiate transmissionof the client data over the determined flow in accordance with theschedule.

In some embodiments where flows are determined without client datainformation, the scheduling module 336 may cause the one or moreprocessors 310 to send a message to a client device of the one or moreclient devices 350 regarding indicating availabilities of flows throughthe network based on the determined flows determined using the flowdetermination module 330 and the network configuration generated usingthe solver module 330. The message may also include a time or a timeframe at which the flows are available and/or a price for transmissionof the data associated with each flow. Using the schedule module 336,the one or more processors 310 may receive a response from one of theone or more client devices 350 that includes a request to use one of thedetermined flows for transmitting client data. The one or moreprocessors 310 may then send routing instructions to the one or morenodes to initiate transmission of the client data over the determinedflow.

Example Methods

In FIG. 5, flow diagram 500 is shown in accordance with some of theaspects described above that may be performed by the one or moreprocessors 310 of the network controller 300. While FIG. 5 shows blocksin a particular order, the order may be varied and that multipleoperations may be performed simultaneously. Also, operations may beadded or omitted.

At block 502, the one or more processors 310 of the network controller300 may receive information from each of the nodes within the network100 using the topology and routing manager module 326. Information maybe related to the current or predicted condition of the nodes, weather,or links at a current time or a future time. In an example scenario,location A may be received as the current location of HAP 110 a at acurrent time, location C may be received as the current location of HAP110 c at the current time, and location D may be received as the currentlocation of HAP 110 d. The weather conditions report from HAP 110 a and110 c may indicate that the current weather conditions are clear atlocations A and C. HAP 110 d may also send an indication that there isavailable storage of 10 Gb at HAP 110 d between at the current time.HAPs 110 a and 110 d may each send an indication to the one or moreprocessors 310 that HAP 110 c has been unresponsive to requests to for alink 133. In addition, HAP 110 a may be predicted to travel fromlocation A to location B in one hour from the current time, and HAP 110d may be predicted to travel from location D to location E in one hourfrom the current time. The weather forecast for location B in one hourfrom the current time may include a thunderstorm.

At block 504, a table representing available nodes and possible links inthe network 100, such as table 400 shown in FIG. 4, may be generated orupdated based on the information received from the nodes of the networkusing the topology and routing manager module 326. As noted above, thetable may be stored in the memory 320. In the example scenario, for HAP110 a, the table may be generated or updated to indicate that HAP 110 ais available at location A where the weather is currently clear, andthat HAP 110 a is predicted to be at location B in one hour, where theweather will include a thunderstorm at that time. For HAP 110 c, thetable 400 may be generated or updated to indicate that HAP 110 c iscurrently located at location C. For HAP 110 d, the table 400 may begenerated or updated to indicate that HAP 110 d is currently located atlocation D and is currently has 10 Gb of available storage, and that HAP110 d is predicted to be at location E in one hour. For the link 133between HAPs 110 a and 110 c, the table may be generated or updated toindicate that the link 133 has failed. For the link 134 between HAPs 110b and 110 c, the table may be generated or updated to indicate that thelink 134 has failed.

At block 506, the one or more processors 310 may determine a currentand/or future topology of the network based on the table using thetopology determination module 328. For the example scenario, todetermine the current topology, the one or more processors 310 mayaccess the table in the memory 320 and determine from the table and thescheduled times associated with each node and link which nodes and linksare available at the current time. According to the received informationabout HAPs 110 a-110 d, a current topology 600 may be determined asshown in FIG. 6. The current topology may be determined to include nodes107, 110. Specifically, HAP 110 a may be included in the currenttopology at location A, HAP 110 c at location C, and HAP 110 d atlocation D since these are the locations associated with the respectiveHAPs in the table for the current time. As shown by the arrows in thecurrent topology 600, links 130-132 and 135-137 are included in thecurrent topology, the link 133 between HAP 110 a and 110 c and the link134 between HAP 110 d and 110 c, which are indicated as failed for thecurrent time, are not included (shown as a dash-dot line without arrowsin FIG. 6). In another example, if HAP 110 c did not report its locationat location C to one or more processors 310 but previously reported aflight path or a trajectory using the flight control module 334, the oneor more processors 310 may determine that HAP 110 c currently is atlocation C based on the flight path or trajectory and include HAP 100 cin the current topology. Each possible link 130-132 and 135-137 in thecurrent topology may also be labeled with link metrics, such asbandwidth, that are determined based on the received information. In thediagram of the current topology 600, solid lines indicate that links130, 131, 134, 137 are capable of higher bandwidths, such as 3 Mbps ormore, and dashed lines indicate that links 132, 135, 136 are capable oflower bandwidths, such as less than 3 Mbps.

Further in the example scenario, for a future time of one hour after thecurrent time, a future topology 700 may be determined, as shown in FIG.7. The one or more processors 310 may determine the location for HAP 110a at the future time to be location B and the location for HAP 110 d atthe future time to be location D based on the location information forthe future time in the table. In addition, because the table includes anindication that the weather forecast includes a thunderstorm at locationB as described above, the future topology may be determined to includeHAP 110 a at location B, but indicate that it is unavailable at leastfor FSOC. As shown in FIG. 7, the dash-dot outline of HAP 110 aindicates that HAP 110 a is unavailable in the future topology for thefuture time, and also shows links 130-133 in dash-dot lines to indicatethat these links with HAP 100 a may also be unavailable. As furthershown in FIG. 7, the link 134 between HAP 110 d and 110 c may beestablished at the future time based at least in part on HAP 110 d beingin location D.

Returning to FIG. 5, at block 508, information related to client data tobe transmitted through network 100 may be received by the one or moreprocessors 310 using the scheduling module 336. The client datainformation may be received from client devices in communication withthe network controller 300. The client data information may include anamount of data, a source location, and a destination location of theclient data, and a requested time of transmission. For example, in theexample scenario, the received information may indicate that the amountof client data is 10 Gb, the source location for client data is groundstation 107 a, the destination location is ground station 107 b, and arequested time of transmission is the current time. In some cases, theinformation also includes transmission requirements, such as bandwidth,class of service, quality of service, etc. In some embodiments,information related to client data may be predicted by the one or moreprocessors 310 of the network controller 300 or by a remote system.

At block 510, the one or more processors 310 may determine one or moreflows for a current or future time using the current or future topologyand the client data information using the flow determination module 330.In the case of the client data requesting transmission at the currenttime, one or more flows may be determined for the current time. Thecurrent topology may be retrieved from the table stored in memory 320.The one or more processors 310 in the example scenario may determinethat the flow for the client data may be between ground station 107 aand ground station 107 b because the source location is connectable withground station 107 a and the destination location is connectable toground station 107 b, and both ground stations 107 a and 107 b areavailable according to the current topology. In addition, the bandwidthmay be determined to be a minimum of 3 Gbps for the 10 Gb of clientdata. On the other hand, for 5 Gb of other client data, the minimumbandwidth requirement may be 1 Gbps. Alternatively, the minimumbandwidth requirement may be set by the client device. A time frame forthe flow for the 10 Gb of client data may be determined to be 5 seconds,to ensure that the client data has time to be transmitted at a minimumrate of 3 Gbps.

In some implementations, the one or more processors 310 may aggregateclient data from one or more client devices for transmission through thenetwork. For example, the 10 Gb of client data previously mentioned maybe aggregated with another 10 Gb of client data from the same ordifferent client device to also be transmitted from ground station 107 ato ground station 107 b. Based on the total amount of 20 Gb of clientdata, the one or more processors 310 may determine that the flow betweenground stations 107 a and 107 b may require a minimum bandwidth of 4Gbps.

At block 512, the one or more processors 310 may generate a schedule ofnetwork configurations that includes a current network configuration forthe current time and a future network configuration for the future timebased on the determined flows and the current and future topology usingthe solver module 332. The schedule of network configurations may bedetermined to include a routing path that spans the current networkconfiguration and the future network configuration. This type of routingpath may be determined when a route between a pair of nodes does notexist in a single topology. For example, as shown in FIG. 6, no directrouting path between ground stations 107 a and 107 b for data requiringgreater than 3 Gbps speeds is possible at the current time given thetopology 600. Links 133 and 134 are unavailable, and links 132, 135, and136 cannot support speeds greater than 3 Gbps. Also in FIG. 7, no directrouting path between ground stations 107 a and 107 b for data requiringgreater than 3 Gbps speeds is possible at the current time given thetopology 700. Links 130-133 are unavailable for FSOC.

In this example scenario, the one or more processors 310 may determinethe routing path of the schedule of network configurations to include anode to which data is transmitted and stored using the current networkconfiguration and from which data is transmitted using the futurenetwork configuration. For example, the current network configurationand the future network configuration may be determined based on the flowbetween ground stations 107 a and 107 b, the current topology 600, thefuture topology 700, and the available storage at node 110 d. Thecurrent network configuration may include a first portion or part 800Aof a routing path as shown in FIG. 8A, and the future networkconfiguration may include a second part 800B of the routing path asshown in FIG. 8B. The first part 800A of the routing path (shown inblock arrows) may include two routing portions be from ground station107 a, through HAP 110 a, to HAP 110 d, using links 130 and 131. Thefirst part 800A of the routing path ends at HAP 110 d, where there isenough available storage, 10 Gb, to store the amount of client datareceived from the client device, 10 Gb. At the future time, HAP 110 dmay reach location D and be able to reestablish link 134 and completethe data transfer to destination ground station 107 b. The second part800B of the routing path (shown in block arrows) may be from HAP 110 d,through HAP 110 c, to ground station 107 b, using links 134 and 137.

As further shown in FIG. 5, at block 514, the one or more processors 310may send implementation instructions to the nodes 107, 110 of thenetwork 100 for implementation of the generated network configurationand transmission of the client data using the topology and routingmanager module 326 and/or the solver module 332. In the examplescenario, for the current network configuration, the implementationinstructions to nodes 107, 110 may include instructions to implement therouting path portions of first part 800A. The implementationinstructions may therefore include instructions to ground station 107 ato point a transceiver of ground station 107 a towards HAP 110 a to formlink 130; instructions to HAP 110 a to point transceivers of HAP 110 atowards ground station 107 a to form link 130 and towards HAP 110 d toform link 131; and instructions to HAP 110 d to point transceivers ofHAP 110 d towards HAP 110 a to form link 131. In some embodiments, theimplementation instructions may also prepare the network for the futurenetwork configuration. In this case, the implementation instructions mayinclude instructions to HAP 110 d to point transceivers towards whereHAP 110 c will be at the future time; instructions to HAP 110 c to pointtransceivers of HAP 110 c towards where HAP 110 d will be at the futuretime and towards ground station 107 b to form link 137; and instructionsto ground station 107 b to point a transceiver of ground station 107 btowards HAP 110 c to form link 137. In some cases, one or more of thelinks may already be formed, in which case no change to the direction ofthe transceivers is necessary. In addition, the implementationinstructions to ground station 107 a, the start station, may includerouting instructions for receipt and transmission of the client data tobe transmitted via routing path 800A-800B. The routing instructions mayinclude the source location of the client data, the destination locationof the client data, the timing for transmission, and/or the rate fortransmission. When the routing instructions are received at groundstation 107 a, the ground station 107 a may be caused to transmit clientdata at the current time through the current network configuration alongrouting path 800A-800B.

For a network configuration generated for a future point in time, theimplementation instructions may include storing scheduled changes in thenetwork 100, such as steering transceivers to implement new routingpaths, at each node that may occur before transmitting client data atthe future point in time. The implementation instructions may thereforeinclude updating forwarding tables at each node with new routing pathsand time or a time frame for implementing the new routing pathsaccording to the future network configuration. When the time or timeframe arrives, the nodes 107, 110 of network 100 may be caused toautomatically implement the future network configuration according tothe implementation instructions.

Alternatively, the one or more processors 310 of network controller 300may request client data information from the one or more client devices350 based on a plurality of available flows in the network 100 using thescheduling module 336. To do so, the one or more processors 310 may usethe flow determination module 330 to determine a plurality of availableflows between nodes directly connectable with client devices, such asground stations 107 a, 107 b, based on the current or future topology.The plurality of available flows may alternatively be determined withoutreceiving client data information and may include performance metricsfor each flow. After determining the plurality of possible flows betweennodes directly connectable with client devices, the one or moreprocessors 310 may use the scheduling module 336 send a message to afirst client device of the one or more client devices 350 via thecommunication system 340. The messages may include a list of availableflows from the plurality of available flows that are between the nodedirectly connectable to the first client device and all other nodesdirectly connectable to other client devices. In addition, the messagemay include a request for client data information for transmissionthrough the network 100. A response may be received from the firstclient device including the client data information, which may then beused by the one or more processors 310 to generate and implement thenetwork configuration using the solver module 332 as described above.

In another alternative embodiment, the client data information receivedat block 508 may not include a requested time for transmission or therequested time for transmission may not be feasible based on thetopology of the network at the requested time. The one or moreprocessors 310 of the network controller 300 may then determine ascheduled time for transmission for the client data using the schedulingmodule 336. The scheduled time may be determined based on the tablerepresenting all of the available nodes and possible links in thenetwork 100 at a given time or time frame. For example, client datainformation may include a request to transmit 5 Gb of client data at thefuture time, one hour after the current time. Based on the sourcelocation and destination location in the client data information, thestart station may be determined to be ground station 107 a and thedestination station may be determined to be ground station 107 b.However, based on the future topology 700, shown in FIG. 7, HAP 110 a isunavailable at the future time and therefore link 130 is alsounavailable at the future time. Using the table stored in memory 320,the one or more processors 310 may then identify a second future time,which is the earliest time at which link 130 becomes available or a linkbetween ground station 107 a and another HAP, such as HAPs 110 b-d,becomes available. The transmission of the 5 Gb of client data may thenbe scheduled to be at the second future time. The second future networkconfiguration for the second future time may be generated to include arouting path between ground stations 107 a and 107 b. Alternatively, thesecond future network configuration may be updated to include therouting path between ground stations 107 a and 107 b if the secondfuture network configuration was generated without the routing path.

The features described above may provide for a reliable way for users totransmit data to different parts of the world. A communication networkcreated using the features described may provide users with networkcoverage that is more robust to fade and outages. Because of this, endusers of the communication network are more likely to use the networkbecause it may provide more reliable transmission of data. In addition,because of the mobility of the nodes end users may therefore haveincreased accessibility to datacenters and other points of interestworldwide.

Unless otherwise stated, the foregoing alternative examples are notmutually exclusive, but may be implemented in various combinations toachieve unique advantages. As these and other variations andcombinations of the features discussed above can be utilized withoutdeparting from the subject matter defined by the claims, the foregoingdescription of the embodiments should be taken by way of illustrationrather than by way of limitation of the subject matter defined by theclaims. In addition, the provision of the examples described herein, aswell as clauses phrased as “such as,” “including” and the like, shouldnot be interpreted as limiting the subject matter of the claims to thespecific examples; rather, the examples are intended to illustrate onlyone of many possible embodiments. Further, the same reference numbers indifferent drawings can identify the same or similar elements.

The invention claimed is:
 1. A system comprising: a network controllerconfigured to: receive information regarding a plurality of nodes of anetwork, the received information including available storage at eachnode, the plurality of nodes including a first node that is in motionrelative to a second node; determine a plurality of available flowsthrough the network for a period of time based on the receivedinformation; request client data information from one or more remotedevices for the period of time; receive client data information inresponse to the request, the received client data information includinga data amount; generate one or more network configurations for thenetwork for the period of time based on the data amount and theavailable storage at each node; and send instructions to the pluralityof nodes of the network for implementing the one or more networkconfigurations and transmitting client data over the period of time fromthe one or more remote devices.
 2. The system of claim 1, wherein eachflow in the plurality of available flows is connectable with the one ormore remote devices.
 3. The system of claim 1, wherein the networkcontroller is further configured to determine performance metrics foreach flow in the plurality of available flows and generate the one ormore network configurations further based on the determined performancemetrics.
 4. The system of claim 1, wherein the network controller isconfigured to request the client data information by sending a messagethat includes a list of available flows based on the plurality ofavailable flows.
 5. The system of claim 1, wherein the networkcontroller is further configured to determine a scheduled time fortransmission for the client data during the period of time; and whereinthe instructions include the scheduled time for transmission for theclient data.
 6. The system of claim 5, wherein the scheduled time isbased on a source location and a destination location in the receivedclient data information.
 7. The system of claim 1, wherein the one ormore network configurations includes a first network configuration, asecond network configuration scheduled to follow the first networkconfiguration, a first routing path having a first portion between afirst node and a second node and a second portion between the secondnode and a third node, and the first portion of the first routing pathbeing a part of the first network configuration and the second portionof the first routing path being a part of the second networkconfiguration.
 8. The system of claim 7, wherein the second node hasenough available storage to store the data amount, and the secondportion of the first routing path beings at the second node and thesecond node is configured to store the client data before transmittingthe client data via the second portion of the routing path.
 9. Thesystem of claim 8, wherein the second network configuration includes anewly established link between the second node and a next hop in thesecond portion of the routing path.
 10. The system of claim 9, whereinthe second node is in motion relative to the next hop in the secondportion of the routing path.
 11. A method comprising: receiving, by anetwork controller for a network, information regarding a plurality ofnodes of the network, the received information including availablestorage at each node, the plurality of nodes including a first node thatis in motion relative to a second node; determining, by the networkcontroller, a plurality of available flows through the network for aperiod of time based on the received information; requesting, by thenetwork controller, client data information from one or more remotedevices for the period of time; receiving, at the network controller,client data information in response to the request, the client datainformation including a data amount; generating, by the networkcontroller, one or more network configurations for the network for theperiod of time based on the data amount and the available storage ateach node; and sending, by the network controller, instructions to theplurality of nodes of the network for implementing the one or morenetwork configurations and transmitting client data over the period oftime from the one or more remote devices.
 12. The method of claim 11,wherein each flow in the plurality of available flows is connectablewith the one or more remote devices.
 13. The method of claim 11, furthercomprising determining, by the network controller, performance metricsfor each flow in the plurality of available flows; and whereingenerating the one or more network configurations is further based onthe determined performance metrics.
 14. The method of claim 11, whereinrequesting the client data information includes sending a message thatincludes a list of available flows based on the plurality of availableflows.
 15. The method of claim 11, further comprising determining ascheduled time for transmission for the client data during the period oftime; and wherein the instructions include the scheduled time fortransmission for the client data.
 16. The method of claim 15, whereinthe scheduled time is based on a source location and a destinationlocation in the received client data information.
 17. The method ofclaim 11, wherein the one or more network configurations includes afirst network configuration, a second network configuration scheduled tofollow the first network configuration, a first routing path having afirst portion between a first node and a second node and a secondportion between the second node and a third node, the first portion ofthe first routing path being a part of the first network configurationand the second portion of the routing path being a part of the secondnetwork configuration.
 18. A non-transitory, tangible computer-readablestorage medium on which computer readable instructions of a program arestored, the instructions, when executed by a network controller for anetwork, cause the network controller to perform a method, the methodcomprising: receiving information regarding a plurality of nodes of thenetwork, the received information including available storage at eachnode, the plurality of nodes including a first node that is in motionrelative to a second node; determining a plurality of flows through thenetwork for a period of time based on the received information;requesting client data information from one or more remote devices forthe period of time; receiving client data information in response to therequest, the client data information including a data amount; generatingone or more network configurations for the network for the period oftime based on the data amount and the available storage at each node;and sending instructions to the plurality of nodes of the network forimplementing the one or more network configurations and transmittingclient data over the period of time from the one or more remote devices.19. The medium of claim 18, wherein requesting the client datainformation includes sending a message that includes a list of availableflows based on the plurality of available flows.
 20. The medium of claim18, wherein method further comprises determining a scheduled time fortransmission for the client data during the period of time; and whereinthe instructions include the scheduled time for transmission for theclient data.